<?php
	/**
	  * @name		ObjectToArray
	  * @brief		Clase para convertir Objetos a Array y viceversa
	  * @author		Hermann D. Schimpf <hschimpf@gschimpf.com>
	  * @license	http://opensource.org/licenses/gpl-2.0.php
	  * @date		2009-12-30
	  * @version	0.1.5
  	**/

	class ObjectToArray extends MyDebuger implements MyVersions {
		/* version de la clase */
		private static $version			= 0;
		/* subversion de la clase */
		private static $subversion		= 1;
		/* numero de revision de la clase */
		private static $revision		= 5;

		public static final function getVersion() {
			/* retornamos la version actual de la clase */
			return 'v' . self::$version . '.' . self::$subversion . '.' . self::$revision;
		}

		public final function __construct($debug = False) {
			/* creamos el padre */
			parent::__construct($debug, __CLASS__);
		}

		/* convertimos un objeto a array */
		public static function toArray($object, $debug = False) {
			/* creamos una instancia */
			$array = new ObjectToArray($debug);
			/* mostramos un mensaje */
			$array->show('Convirtiendo objeto a array..', False);
			/* verificamos si es un array u objeto */
			if (is_array($object) || is_object($object)) {
				/* recorremos el objeto / array */
				foreach ($object AS $key => $value)
					/* guardamos en el array la clave y convertimos el valor */
					$array->array[$key] = ObjectToArray::toArray($value, $debug);
				/* mostramos ok al mensaje */
				$array->showOK();
				/* retornamos el array */
				return $array->array;
			} else
				/* mostramos un mensaje */
				$array->show($array->red('El parametro recibido no es un objeto'));
			/* si no es array ni object retornamos el valor */
			return $object;
		}

		/* convertimos un array en objeto */
		public static function toObject($array, $debug = False) {
			/* creamos una instancia */
			$object = new ObjectToArray($debug);
			/* mostramos un mensaje */
			$object->show('Convirtiendo array a objeto..', False);
			/* mostramos ok al mensaje */
			$object->showOK();
			/* retornamos el array convertido en objeto */
			return (object) $array;
		}
	}
?>